package com.jt.config;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import redis.clients.jedis.*;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

@Configuration//我是一个配置类
@PropertySource("classpath:/properties/redis.properties")
public class JedisConfig {
    @Value("${redis.nodes}")
    private String nodes;//node,node,node
    /**
     * Spring 整合redis集群
     */
    @Bean
    public JedisCluster jedisCluster(){
        Set<HostAndPort> set = new HashSet<>();
        String[] nodeArray = nodes.split(",");
        for(String node:nodeArray){//host:port
            String[] nodeTemp = node.split(":");
            String host = nodeTemp[0];
            int port = Integer.parseInt(nodeTemp[1]);
            HostAndPort hostAndPort = new HostAndPort(host,port);
           set.add(hostAndPort);
        }
        return new JedisCluster(set);
    }
    /**
     * 添加Redis分片的设置
     * 需求1：动态的获取ip地址、port端口
     *
     */
//    @Value("${redis.nodes}")
//    private String nodes;//node,node
//   @Bean
//    public ShardedJedis shardedJedis(){
//        List<JedisShardInfo> list = new ArrayList<>();
//        String[] strArray = nodes.split(",");
//        for(String node : strArray){//ip:port
//            String host = node.split(":")[0];
//            int port = Integer.parseInt(node.split(":")[1]);
//            list.add(new JedisShardInfo(host,port));
//        }
//
//    return new ShardedJedis(list);
//    }
//
//    @Value("${redis.host}")
//    private String host;
//    @Value("${redis.port}")
//    private Integer port;
//
//    /**
//     * 表示将jedis的对象交给spring管理
//     */
//    @Bean
//    public Jedis jedis() {
//        //由于将代理写死,不利于拓展
//        return new Jedis(host, port);
//    }
}
